﻿
@using Destiny.Core.Flow.CodeGenerator;

@{

    ProjectMetadata metadata = Model;
}


using System;
using @(metadata.Namespace).Dtos;
using Destiny.Core.Flow.Dependency;
using System.Threading.Tasks;
using Destiny.Core.Flow.Filter;
using Destiny.Core.Flow.Filter.Abstract;
using Destiny.Core.Flow.Ui;



namespace @(metadata.Namespace).IServices.@(metadata.EntityMetadata.EntityName)s
{
    ///&lt;summary&gt;
    ///@(string.IsNullOrEmpty(metadata.EntityMetadata.DisplayName) ? metadata.EntityMetadata.EntityName : metadata.EntityMetadata.DisplayName)
    ///&lt;/summary&gt;
    public interface I@(metadata.EntityMetadata.EntityName)Service : IScopedDependency
    {
        /// &lt;summary&gt;
        /// 异步创建@(metadata.EntityMetadata.DisplayName)
        /// &lt;/summary&gt;
        /// &lt;param name="dto"&gt;添加的@(metadata.EntityMetadata.DisplayName)DTO&lt;/param&gt;
        Task&lt;OperationResponse&gt; CreateAsync(@(metadata.EntityMetadata.EntityName)InputDto dto);


        /// &lt;summary&gt;
        /// 异步更新@(metadata.EntityMetadata.DisplayName)
        /// &lt;/summary&gt;
        /// &lt;param name="dto"&gt;更新的@(metadata.EntityMetadata.DisplayName)DTO&lt;/param&gt;
        Task&lt;OperationResponse&gt; UpdateAsync(@(metadata.EntityMetadata.EntityName)InputDto dto);

        /// &lt;summary&gt;
        /// 异步加载表单@(metadata.EntityMetadata.DisplayName)
        /// &lt;/summary&gt;
        /// &lt;param name="id"&gt;要加载的@(metadata.EntityMetadata.DisplayName)主键&lt;/param&gt;
        Task&lt;OperationResponse&lt;@(metadata.EntityMetadata.EntityName)OutputDto&gt;&gt; LoadFormAsync(@metadata.EntityMetadata.PrimaryKeyType id);

        /// &lt;summary&gt;
        /// 异步删除@(metadata.EntityMetadata.DisplayName)
        /// &lt;/summary&gt;
        /// &lt;param name="id"&gt;要删除的@(metadata.EntityMetadata.DisplayName)主键&lt;/param&gt;
        Task&lt;OperationResponse&gt; DeleteAsync(@metadata.EntityMetadata.PrimaryKeyType id);

        /// &lt;summary&gt;
        /// 异步得到@(metadata.EntityMetadata.DisplayName)分页数据
        /// &lt;/summary&gt;
        /// &lt;param name="request"&gt;分页请求数据&lt;/param&gt;
        Task&lt;IPagedResult&lt;@(metadata.EntityMetadata.EntityName)PageListDto&gt;&gt; GetPageAsync(PageRequest request);

    }

}
